﻿using Rhizome.Contract;

namespace Rhizome.Model
{
	public abstract class ItemBase<TPlant> : RhizomeElement, IStateInitialize
	{
		protected IEventSink EventSink
		{
			get { return GetValue(EventSyncProperty); }
		}

		protected TPlant Plant
		{
			get { return (TPlant) GetValue(PlantProperty); }
		}

		#region IStateInitialize Members

		public virtual void Initialize()
		{
		}

		public virtual void Cleanup()
		{
		}

		#endregion
	}

	public abstract class ItemBase : ItemBase<object>
	{
	}
}